<

Flutter を使用した Windows アプリの構築

このページでは、構築に特有の考慮事項について説明します。 Flutter を使用した Windows アプリ (シェル統合を含む) および Windows アプリの配布 Windows 上の Microsoft ストア。

Windowsとの統合

Windows プログラミング インターフェイスは、従来の Win32 API を組み合わせたもので、 COM インターフェイスとより最新の Windows ランタイム ライブラリ。 これらはすべて C ベースの ABI を提供するため、 運営会社が提供するサービスに電話をかけることができます。 Dart の外部関数インターフェイス ライブラリを使用したシステム (dart:ffi)。 FFI は、Dart プログラムが効率的に呼び出しできるように設計されています。 C ライブラリ。 Flutter アプリに割り当て機能を提供します。 ネイティブメモリとmallocまたcalloc、ポインタのサポート、 構造体とコールバック、および次のような ABI タイプlongsize_t

Flutter から C ライブラリを呼び出す方法の詳細については、 見るCの相互運用性を使用してdart:ffi

実際には、呼び出すのは比較的簡単ですが、 このようにして Dart からの基本的な Win32 API、 を抽象化するラッパー ライブラリを使用する方が簡単です。 COM プログラミング モデルの複雑さ。 のwin32パッケージライブラリを提供します 何千もの一般的な Windows API にアクセスするため、 一貫性と正確性のために Microsoft が提供するメタデータを使用します。 パッケージには次の例も含まれています さまざまな一般的な使用例、 WMI、ディスク管理、シェル統合など、 およびシステムダイアログ。

他の多くのパッケージはこの基盤に基づいて構築されています。 慣用的な Dart アクセスを提供するWindows レジストリ、ゲームパッドのサポート、生体認証ストレージ、タスクバーの統合、 とシリアルポートアクセス、いくつか例を挙げると。

より一般的には、他の多くのパッケージは Windows をサポートします、 などの一般的なパッケージを含むurl_launchershared_preferencesfile_selector、 とpath_provider

Windows UI ガイドラインのサポート

選択したビジュアル スタイルやテーマを使用できますが、 マテリアルを含む、一部のアプリ作成者はビルドを希望する可能性があります Microsoft の規約に一致するアプリ流暢なデザインシステム。のfluent_uiパッケージ、 ある flutterのお気に入り、ビジュアルのサポートを提供します および一般的に見られる共通コントロール 最新の Windows アプリ (ナビゲーション ビューなど) コンテンツダイアログ、フライアウト、日付 ピッカー、およびツリー ビュー ウィジェット。

さらに、マイクロソフトが提供するのは、fluentui_system_icons、 何千ものコンテンツに簡単にアクセスできるパッケージ Flutter アプリで使用する流暢なアイコン。

最後に、bitsdojo_windowパッケージはサポートを提供します 「オーナー描画」タイトル バーの場合、置き換えることができます。 標準の Windows タイトル バーとカスタム タイトル バー アプリの残りの部分と一致します。

Windowsホストアプリケーションのカスタマイズ

Windows アプリを作成すると、Flutter は Flutter をホストする小さな C++ アプリケーション。 この「ランナー アプリ」は、 従来の Win32 ウィンドウ、Flutter の初期化 エンジンとネイティブプラグイン、 そして Windows メッセージ ループを実行します (さらなる処理のために関連メッセージを Flutter に渡します)。

もちろん、ニーズに合わせてこのコードを変更することもできます。 アプリ名とアイコンの変更を含む、 そしてウィンドウの初期サイズと位置を設定します。 関連するコードは main.cpp にあります。 ここには、次のようなコードがあります。

Win32Window::Point origin(10, 10);
Win32Window::Size size(1280, 720);
if (!window.CreateAndShow(L"myapp", origin, size))
{
    return EXIT_FAILURE;
}

交換myappに表示したいタイトルを付けて、 Windows キャプション バー、およびオプションで調整する サイズとウィンドウ座標の寸法。

Windows アプリケーションのアイコンを変更するには、app_icon.ico内のファイルwindows\runner\resourcesディレクトリに好みのアイコンが表示されます。

生成された Windows 実行可能ファイル名は変更できます を編集することでBINARY_NAME変数のwindows/CMakeLists.txt:

cmake_minimum_required(VERSION 3.14)
project(windows_desktop_app LANGUAGES CXX)

# The name of the executable created for the application.
# Change this to change the on-disk name of your application.
set(BINARY_NAME "YourNewApp")

cmake_policy(SET CMP0063 NEW)

走るときflutter build windows、 で生成された実行可能ファイルbuild\windows\runner\Releaseディレクトリ 新しく付けられた名前と一致します。

最後に、アプリ実行可能ファイルのその他のプロパティ それ自体は、Runner.rc内のファイルwindows\runnerディレクトリ。ここで変更できます 著作権情報とアプリケーションのバージョン Windows アプリに埋め込まれており、表示されます Windows エクスプローラーのプロパティ ダイアログ ボックスで。 バージョン番号を変更するには、VERSION_AS_NUMBERVERSION_AS_STRINGプロパティ; 他の情報はStringFileInfoブロック。

Visual Studio でコンパイルする

ほとんどのアプリでは、Flutter に次のことを許可するだけで十分です。 を使用してコンパイルプロセスを処理しますflutter runflutter buildコマンド。重要なことをしているなら ランナー アプリへの変更、または既存のアプリへの Flutter の統合、 Visual Studio 自体で Flutter アプリをロードまたはコンパイルすることもできます。

次の手順を実行します:

  1. 走るflutter build windowsを作成するにはbuild\ディレクトリ。

  2. Windows ランナーの Visual Studio ソリューション ファイルを開きます。 これは現在、build\windowsディレクトリ、 親の Flutter アプリに従って名前が付けられます。

  3. ソリューション エクスプローラーには、多数のプロジェクトが表示されます。 Flutter アプリと同じ名前のものを右クリックし、 そして選択してくださいスタートアッププロジェクトとして設定

  4. 走る構築 / ソリューションの構築(または Ctrl+Shift+B を押します) 必要な依存関係を生成します。 これで実行できるはずですデバッグ / デバッグの開始(または F5 キーを押して) Visual Studio から Windows アプリを実行します。

  5. ツールバーを使用してデバッグとリリースを切り替えます 必要に応じて構成を変更します。

Windowsアプリの配布

使用できるさまざまなアプローチがあります Windows アプリケーションを配布します。 以下にいくつかのオプションがあります。

  • ツールを使用して MSIX インストーラーを構築する (次のセクションで説明します) あなたのアプリケーションに合わせて配布してください Microsoft Windows App Store。 署名を手動で作成する必要はありません このオプションの証明書はそのままです あなたに代わって処理されます。
  • MSIX インストーラーを構築して配布する あなた自身のウェブサイトを通じて。このため オプションを使用するには、アプリケーションに 形式のデジタル署名.pfx証明書。
  • 必要なピースをすべて集めます そして独自の zip ファイルを構築します。

MSIX パッケージ化

MSIX、新しい Windows アプリケーション パッケージ形式、 最新のパッケージ形式とインストーラーを提供します。 この形式は、アプリケーションの配布に使用できます。 Windows の Microsoft Store にアクセスすることも、次のこともできます。 アプリのインストーラーを直接配布します。

MSIX ディストリビューションを作成する最も簡単な方法 Flutter プロジェクトの場合は、msixパブパッケージ。 使用例としては、msixパッケージ Flutter デスクトップ アプリから、 を参照してくださいデスクトップ写真検索サンプル。

ローカルテスト用の自己署名.pfx証明書を作成する

ヘルプを使用したプライベートな展開とテストの場合 MSIX インストーラーの場合は、アプリケーションに 形式のデジタル署名.pfx証明書。

Windowsストアを介して展開するために、 を生成する.pfx証明書は必要ありません。 Windows ストアが作成と管理を行います 申請用の証明書の数 自社ストアを通じて配布される。

アプリケーションをセルフホスティングして配布する Web サイトには、によって署名された証明書が必要です Windows に認識されている認証局。

次の手順に従って、 自己署名.pfx証明書。

  1. まだダウンロードしていない場合は、OpenSSL証明書を生成するためのツールキット。
  2. たとえば、OpenSSL をインストールした場所に移動します。C:\Program Files\OpenSSL-Win64\bin
  3. にアクセスできるように環境変数を設定します。OpenSSLどこからでも:
    "C:\Program Files\OpenSSL-Win64\bin"
  4. 次のように秘密キーを生成します。
    openssl genrsa -out mykeyname.key 2048
  5. 証明書署名リクエスト (CSR) を生成する 秘密キーを使用してファイルを作成します。
    openssl req -new -key mykeyname.key -out mycsrname.csr
  6. 次を使用して署名付き証明書 (CRT) ファイルを生成します。 秘密キーと CSR ファイル:
    openssl x509 -in mycsrname.csr -out mycrtname.crt -req -signkey mykeyname.key -days 10000
  7. を生成します。.pfx秘密キーを使用してファイルを作成し、 CRT ファイル:
    openssl pkcs12 -export -out CERTIFICATE.pfx -inkey mykeyname.key -in mycrtname.crt
  8. をインストールします。.pfxローカルマシン上で最初に証明書を作成する のCertificate storeとしてTrusted Root Certification Authoritiesアプリをインストールする前に。

Windows 用の独自の zip ファイルを構築する

Flutter 実行可能ファイル、.exe、 下のプロジェクトbuild\windows\runner\<build mode>\。 その実行ファイルに加えて、次のものが必要です。

  • 同じディレクトリから:
    • 全ての.dllファイル
    • dataディレクトリ
  • Visual C++ 再頒布可能ファイル。 に示されている方法のいずれかを使用できます。導入例のウォークスルーマイクロソフトのサイトで エンド ユーザーが C++ 再頒布可能ファイルを確実に入手できるようにします。 を使用する場合は、application-localオプションの場合は、以下をコピーする必要があります。
    • msvcp140.dll
    • vcruntime140.dll
    • vcruntime140_1.dll

    DLL ファイルを実行可能ファイルの隣のディレクトリに配置します。 と他の DLL をまとめて zip ファイルにバンドルします。 結果の構造は次のようになります。

    Release
    │   flutter_windows.dll
    │   msvcp140.dll
    │   my_app.exe
    │   vcruntime140.dll
    │   vcruntime140_1.dll
    │
    └───data
    │   │   app.so
    │   │   icudtl.dat
    
    ...
    

この時点で、必要に応じて、比較的簡単に行うことができます。 このフォルダーを Inno Setup、WiX などの Windows インストーラーに追加します。